class Employee(object):
    def __init__(self, code, name):
        self.code = code
        self.name = name


class Employee_Args(object):
    # *args Non-Keyword Arguments
    def __init__(self, code, name, *args):
        self.code = code
        self.name = name
        self.detail = args


class Employee_Kwargs(object):
    # *kwargs Keyword Arguments
    def __init__(self, code, name, **kwargs):
        self.code = code
        self.name = name
        self.details = kwargs


class Employee_Kwargs_Only(object):
    # *kwargs Keyword Arguments
    # *, salary is keyword-only arguments
    def __init__(self, code, name, *, salary, **kwargs):
        self.code = code
        self.name = name
        self.salary = salary
        self.details = kwargs


if __name__ == '__main__':

    # Non-Keyword Arguments
    employee_args_jacky = Employee_Args('E01', 'Jacky', '123-897-574', 'jacky@email.com')
    print(employee_args_jacky.name+'\'s phone: ', employee_args_jacky.detail[0])
    args_data = ('987-654-321', 'siri@email.com')
    employee_args_siri = Employee_Args('E01', 'Siri', *args_data)
    print(employee_args_siri.name+'\'s phone: ', employee_args_siri.detail[0])

    # Keyword Arguments
    employee_kwargs_jacky = Employee_Kwargs('E01', 'Jacky', phone='123-897-574', email='jacky@email.com')
    print(employee_kwargs_jacky.name+'\'s email: ', employee_kwargs_jacky.details.get('email'))
    kwargs_data = dict(phone='987-654-321', email='siri@email.com')
    employee_kwargs_siri = Employee_Kwargs('E01', 'Siri', **kwargs_data)
    print(employee_kwargs_siri.name+'\'s email: ', employee_kwargs_siri.details.get('email'))

    # Keyword-Only Arguments
    employee_kwargs_only_jacky = Employee_Kwargs_Only('E01', 'Jacky', salary=1000, phone='123-897-574', email='jakcy@email.com')
    print(employee_kwargs_only_jacky.name+'\'s salary: ', employee_kwargs_only_jacky.salary)
    employee_kwargs_only_siri = Employee_Kwargs_Only('E01', 'Siri', salary=50, **kwargs_data)
    print(employee_kwargs_only_siri.name+'\'s salary: ', employee_kwargs_only_siri.salary)
